/**
 * 将JSON对象转换为FormData
 * @param {Object} obj - 要转换的JSON对象
 * @param {FormData} [formData] - 可选的现有FormData实例
 * @param {string} [parentKey] - 可选的父级key
 * @returns {FormData}
 */
function jsonToFormData(obj, formData = new FormData(), parentKey = '') {
    for (const key in obj) {
        if (obj.hasOwnProperty(key)) {
            const value = obj[key];
            const formKey = parentKey ? `${parentKey}[${key}]` : key;

            if (value === null || value === undefined) {
                // 跳过空值
                continue;
            }

            // 处理各种数据类型
            if (value instanceof Date) {
                // 处理日期
                formData.append(formKey, value.toISOString());
            } else if (value instanceof File || value instanceof Blob) {
                // 处理文件和Blob
                formData.append(formKey, value);
            } else if (Array.isArray(value)) {
                // 处理数组
                value.forEach((item, index) => {
                    if (item instanceof File || item instanceof Blob) {
                        formData.append(`${formKey}[${index}]`, item);
                    } else if (typeof item === 'object') {
                        jsonToFormData(item, formData, `${formKey}[${index}]`);
                    } else {
                        formData.append(`${formKey}[${index}]`, String(item));
                    }
                });
            } else if (typeof value === 'object') {
                // 处理嵌套对象
                jsonToFormData(value, formData, formKey);
            } else {
                // 处理基本类型
                formData.append(formKey, String(value));
            }
        }
    }

    return formData;
}